package controllers

import (
	"bytes"
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	beego "github.com/beego/beego/v2/server/web"
	"io"
	"net/http"
	"os"
)

type FileController struct {
	beego.Controller
}

func (c *FileController) File() {
	f, h, e := c.GetFile("avatar")
	if e != nil {
		fmt.Println("文件接受失败")
	}
	defer f.Close()
	// 创建OSSClient实例。
	// yourEndpoint填写Bucket对应的Endpoint，以华东1（杭州）为例，填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
	client, err := oss.New("oss-cn-shanghai.aliyuncs.com", "LTAI5tC7H4HwCxeTu8C6jg4B", "fLlserGDpFdDczblLGXcjtAJGpHOe1")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 填写存储空间名称，例如examplebucket。
	bucket, err := client.Bucket("gwming")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	res, _ := h.Open()
	key, _ := io.ReadAll(res)
	// 将Byte数组上传至exampledir目录下的exampleobject.txt文件。
	err = bucket.PutObject(h.Filename, bytes.NewReader([]byte(key)))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	if err != nil {
		c.Data["json"] = map[string]interface{}{
			"code": http.StatusOK,
			"msg":  err.Error(),
		}
		c.ServeJSON()
		return
	}
	c.Data["json"] = map[string]interface{}{
		"code": http.StatusOK,
		"msg":  "文件上传成功",
	}
	c.ServeJSON()
	return
}
